Cyclic shifts - HackerEarth Solution


Bit Manipulation

Python Code:

t = int(input())

for i in range(t):
    e = input().split(" ")
    currrent = int(e[0])
    currrent = bin(currrent)
    currrent = currrent[2:]
    count = 0

    last = currrent

    while(True):
        if(len(currrent)!= 16):
            currrent = "0" + currrent
        else:
            break

    if(e[2] == "L"):
        last = currrent[:int(e[1])]
        currrent = currrent + last
        currrent = currrent[int(e[1]):]
    else:
        last = currrent[16 - int(e[1]) : ]
        currrent = last + currrent
        currrent = currrent[:16]

    for j in range(len(currrent)):
        count += int(currrent[len(currrent) - 1 - j]) * (2**j)

    print(count)


Comments

Submit
0 Comments
More Questions

1080A - Petya and Origami
1642D - Repetitions Decoding
1440A - Buy the String
1658F - Juju and Binary String
478A - Initial Bet
981A - Antipalindrome
365A - Good Number
1204B - Mislove Has Lost an Array
1409D - Decrease the Sum of Digits
1476E - Pattern Matching
1107A - Digits Sequence Dividing
1348A - Phoenix and Balance
1343B - Balanced Array
1186A - Vus the Cossack and a Contest
1494A - ABC String
1606A - AB Balance
1658C - Shinju and the Lost Permutation
1547C - Pair Programming
550A - Two Substrings
797B - Odd sum
1093A - Dice Rolling
1360B - Honest Coach
1399C - Boats Competition
1609C - Complex Market Analysis
1657E - Star MST
1143B - Nirvana
1285A - Mezo Playing Zoma
919B - Perfect Number
894A - QAQ
1551A - Polycarp and Coins